package com.qf.dao;

import com.qf.pojo.User;
import com.qf.pojo.UserInfo;

import java.util.List;
import java.util.Map;

/**
 * MyBatis的映射文件resultType表示查询结果封装
 *      1.查询结果是单行单列(就是单独一个数据)，映射文件中resultType值是属性类型
 *      2.查询结果是一条数据(一行记录)
 *          2.1可以将数据封装到pojo实体中，映射文件的resultType(返回值类型)值是pojo的全限定名或别称
 *              此时要求查询结果与数据库中字段名与实体类中属性名保一致。
 *          2.2可以将一条数据封装到Map集合中，映射文件中resultType(返回值类型)值是Map集合（别名map）
 *              此时结果要求： 字段名是map.key 字段值是map.value
 *     3.结果集是多行多列数据
 *          3.1将多条数据封装到List<pojo>集合,映射文件的resultType(返回值类型)值是pojo的全限定名或别称
 *          3.2将多条数据封装至List<Map>中;映射文件的resultType值是是Map集合(别名map)
 */
public interface UserDao {
    /**
     * 查询总数据量
     * @return
     */
    Long selectTotal();

    /**
     * 通话id查询用户
     * @param id
     * @return
     */
    User selectById(int id);

    /**
     * 查询实体类中名与值封装到Map集合中
     * @param name
     * @return
     */
    Map selectByName(String name);

    /**
     * 查询所有用户
     * @return
     */
    List<User> selectAll();

    /**
     * 查询所有用户
     * @return
     */
    List<Map> findAll();

    List<UserInfo> findAllUserInfo();
}
